<?php
/*
	粉丝互通
	先完成授权，然后进行绑定操作
*/
defined('BY_JYA') or exit('error');
$_RQ['op']=$_RQ['op']?$_RQ['op']:'list';
$return=array();
$return['types']=array(
	'1'=>'公众号',
	'2'=>'小程序',
);
if($_RQ['op']=='list'){
	$params=array('uniacid'=>$_SESSION['uniacid']);
	
	$fields=array();
	$pindex = max(1, $_RQ['page']);
	$psize = 15;
	$total='';
	$list=pdo_getslice('core_account_open',$params,array($pindex,$psize),$total,$fields);
	if($list){
		foreach($list as &$item){
			if($item['type']==1){
				$item['title']=pdo_getcolumn('core_account_wechat',array('id'=>$item['wxgid']),'title');
			}else{
				$item['title']=pdo_getcolumn('core_account_wxapp',array('id'=>$item['wxgid']),'title');
			}
		}
	}
	$return['list']=$list?$list:array();
	$totalpage=ceil($total/$psize);
	$totalpage=intval($totalpage);
	$return['totalpage'] =$totalpage;
	$return['params']['page'] =$pindex;
	//$return['actions']=get_actions(array('dmenu','mass','fans','media'));
	$htmls=array(
		'type'=>'list',
		'tabs'=>array(
			array('op'=>'list','title'=>'关联列表'),
			array('op'=>'bind','title'=>'添加关联'),
			//array('op'=>'update','title'=>'同步粉丝'),
		),
		'list'=>array('tip'=>'添加到微信开放平台绑定关联后，多个公众号和小程序（<red>必须是同一主体下的公众号/小程序</red>）能够实现粉丝互通，从而实现同一用户在小程序和公众号中保持同一个会员身份！</br><red>【注意】：如果绑定时出现参数错误，或提示管理员未开启微信第三方平台，请联系管理员，移步微信第三方开放平台官网，申请开通！！关联后产生的新会员，才能粉丝统一！</red></br><red>【温馨提示】：</br>1、如果小程序绑定了微信开放平台，小程序的上传版本，就要到微信开放平台来审核，发布版本！</br>2、小程序必须绑定微信开放平台才能互通粉丝，而不是微信公众号那边的简单关联！</red>','delall'=>false,'del_one'=>false,'edit'=>false,'data'=>'list','list'=>array(
			array('type'=>'radio','title'=>'类型','name'=>'type','options'=>'types'),
			array('type'=>'string','title'=>'名称','name'=>'title'),
			array('type'=>'time','title'=>'绑定时间','name'=>'createtime'),
		)),
	);
	$return['htmls']=$htmls;
	exi($return);
}
if($_RQ['op']=='bind'){
	$open=core_setting('open');
	if($_RQ['postdata']){
		$post=get_postdata();
		if(!$open['appid'] || !$open['secret']){
			exi('管理员未开启微信第三方平台！无法使用关联粉丝功能！','error');
		}
		$type=intval($post['type']);
		$id=intval($post['id']);
		$url=cfc('open')->get_sq_url(3,$id);
		exi('点击确认前往授权！','','',$url);
	}	
	$item=array('type'=>1);
	$return['item']=$item;
	$return['htmls']=array(
		'type'=>'edit',
		'tabs'=>array(
			array('op'=>'list','title'=>'返回关联列表'),
		),
		'edit'=>array(
			array('type'=>'help','name'=>'type','title'=>'温馨提示','help'=>'关联公众号有两种方法：【1、手动关联】：登录微信公众号--》小程序关联--》添加关联小程序；【2、下面的方法直接添加关联】：如已手动关联，无需在这重复添加关联！'),
			array('type'=>'radio','name'=>'type','title'=>'类型','options'=>'types'),
			array('type'=>'select','name'=>'id','title'=>'请选择要绑定的小程序','options'=>'wxapp_list','show'=>array('type'=>2)),
			array('type'=>'select','name'=>'id','title'=>'请选择要绑定的公众号','options'=>'wechat_list','show'=>array('type'=>1)),
		),
	);
	
	$return['wxapp_list']=pdo_getall('core_account_wxapp',array('uniacid'=>$_SESSION['uniacid']),array('id','title'));
	$return['wechat_list']=pdo_getall('core_account_wechat',array('uniacid'=>$_SESSION['uniacid']),array('id','title'));
	exi($return);
}
if($_RQ['op']=='result'){
	if (empty($_RQ['auth_code'])){
		exit('授权登陆失败，请重试！');
	}
	$id=intval($_RQ['id']);
	if(!$id){
		exi('授权失败！未选择要授权的小程序或公众号！','error');
	}
	$data=cfc('open')->get_authorization_info($_RQ['auth_code']);
	$info=cfc('open')->get_info($data['authorizer_appid']);
	$update=array(
			'appid'=>$data['authorizer_appid'],
			'access_token'=>$data['authorizer_access_token'],
			'expire'=>TIMESTAMP+$data['expires_in']-200,
			'refresh_token'=>$data['authorizer_refresh_token'],
			'title'=>$info['nick_name'],
			'oldid'=>$info['user_name'],
	);
	if($info['miniprograminfo']){
		//小程序
		$type=2;
		pdo_update('core_account_wxapp',$update,array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
		
	}else{
		//公众号
		$type=1;
		pdo_update('core_account_wechat',$update,array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
	}
	$open_bind=uni_setting('open_appid');
	if(!$open_bind){
		model('core/open',$id,true)->create_open();
	}else{
		model('core/open',$open_bind['id'],true)->bind_open($update['appid'],$open_bind['open_appid']);
	}
	$new_bind=array(
		'uniacid'=>$_SESSION['uniacid'],
		'type'=>$type,
		'wxgid'=>$id,
		'createtime'=>TIMESTAMP,
	);
	pdo_insert('core_account_open',$new_bind);
	exi('绑定成功！','','list');
}
